package java_1_5.Num203;

/**
 * 给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点
 */
public class Num203 {
//    public ListNode removeElements(ListNode head, int val) {
//        //递归-先处理边界问题-递归终止条件
//        if(head==null){
//            return null;
//        }
//        //剩下问题交给子函数处理
//        head.next=removeElements(head.next,val);//更新head.next指向
//        //处理头节点-是否要删除
//        if(head.val==val){
//            return head.next;//头要删,返回head.next；
//        }
//        return head;
//    }

    /**
     * 迭代
     * @return
     */
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummyHead=new ListNode(-1);
        dummyHead.next=head;
        ListNode prev=dummyHead;
        while(prev.next!=null){
            if(prev.next.val==val){
                prev.next=prev.next.next;
            }else{
                prev=prev.next;
            }
        }
        return dummyHead.next;
    }

}
  class ListNode {
    int val;
    ListNode next;
      ListNode() {}
      ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }
